package com.algorithm.排序.基于比较的排序;

import com.algorithm.排序.Sort;

//选择排序的交换次数要远远少于冒泡排序，平均性能优于冒泡排序
public class 选择排序<E extends Comparable<E>> extends Sort<E> {

    @Override
    protected void sort() {
        for (int end = array.length - 1; end > 0; end--) {
            int maxIndex = 0;
            //这里写 <= 是为了把这个排序尽量变成稳定的排序
            for (int begin = 1; begin <= end; begin++) {

                //if (array[maxIndex] <= array[begin]) {
                if (cmp(maxIndex,begin) <= 0) {
                    maxIndex = begin;
                }
            }
            /*int tmp = array[maxIndex];
            array[maxIndex] = array[end];
            array[end] = tmp;*/
            swap(maxIndex,end);
        }
    }
}
